package com.cr.business.service;

import java.util.List;
import java.util.Map;

import com.cr.business.domain.TbProducerInfo;
import com.cr.business.domain.dto.ProducerReqDto;
import com.cr.business.domain.dto.app.ProducerEditParam;
import com.cr.business.domain.dto.app.ProducerListParam;
import com.cr.business.domain.vo.AppProducerInfoData;
import com.cr.business.domain.vo.AppProducerOptionData;
import com.cr.business.domain.vo.ProducerDataVo;

/**
 * 生产人信息Service接口
 * 
 * @author tang
 * @date 2025-08-19
 */
public interface ITbProducerInfoService 
{
    /**
     * 查询生产人信息列表
     * 
     * @param dto 查询参数
     * @return 生产人信息集合
     */
    List<ProducerDataVo> selectTbProducerInfoList(ProducerReqDto dto);

    /**
     * 修改生产人状态
     */
    int updateProducerStatus(TbProducerInfo tbProducerInfo);

    /**
     * 批量删除生产人信息
     * 
     * @param producerIds 需要删除的生产人信息主键集合
     * @return 结果
     */
    int deleteTbProducerInfoByProducerIds(String[] producerIds);


    /**
     * 获取app端生产人列表
     * @param param 查询参数
     */
    Map<String, Object> getAppList(ProducerListParam param);

    /**
     * 查询生产人信息
     *
     * @param producerId 生产人信息主键
     * @return 生产人信息
     */
    AppProducerInfoData selectTbProducerInfoByProducerId(String producerId);

    /**
     * 新增生产人信息
     *
     * @param param 生产人信息
     * @return 结果
     */
    int insertTbProducerInfo(ProducerEditParam param);

    /**
     * 修改生产人信息
     *
     * @param param 生产人信息
     * @return 结果
     */
    int updateTbProducerInfo(ProducerEditParam param);

    /**
     * 删除生产人信息信息
     *
     * @param producerId 生产人信息主键
     * @return 结果
     */
    int deleteTbProducerInfoByProducerId(String producerId);

    /**
     * 获取app端生产人下拉数据
     */
    List<AppProducerOptionData> getAppOptionData();
}
